#ifndef  _Constants
#define  _Constants

#define initialv (1.0e9) 
 
#define PI (asin(1.0)*2.0)
//(3.14159265358979323846264338327950288419716939937510582097494459230)

#define eps (0.0)
//(0.00000000000000022204)

//#define c_vacc (137.036)   // * 0.0529  nm/au
#define c_vacc (7.2498)    // in the unit of 1 nm =10e-9 m in space scale
                           //  and 1 tau = 2.41888e-17 s int time scale


typedef unsigned int u_int;

//used in krylov solver for solving maxwells
extern double globalMaxwellTol;
extern double globalMaxwellTolLowerBound;

//used in dynamically change tol for solving 
//maxwell equation with respect to JD iterations
extern double JDMaxwellTol;
extern double JDMaxwellTolLowerBound;

//used in dynamically change tol for solving 
//correction equations with respect to JD iterations
extern double CorrectionEqnTol;
extern double CorrectionEqnTolLowerBound;

//if change globalMaxwellTol with respect to iterations
//of solving correction equation
extern int isChangeMaxwellTolWRTCorrectionEqn;

//if change CorrectionEqnTol with respect to iterations
//of JD iterations
extern int isChangeCorrectionEqnTolWRTJDiter;

//if change globalMaxwellTol with respect to JDiterations
extern int isChangeMaxwellTolWRTJDiter;

extern int Edge_end[6][2];                   // in local edge index
extern int Face_end[4][3];
extern int Face_edge[4][3];

extern int Face_edge_end[3][2];      // in local edge index in triangle

extern int BM_OUTER;
extern int BM_MPI;
extern int BM_GHOST;
extern int BM_INTERFACE;
extern int BM_INTERFACE_A;
extern int BM_INTERFACE_B;


#endif 

